package com.zzj.service;

import com.zzj.entity.File;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzj.entity.Folder;

import java.util.List;

/**
 * <p>
 * 文件表 服务类
 * </p>
 *
 * @author zzj
 * @since 2023-11-14
 */
public interface IFileService extends IService<File> {

    /**
     * 数据库添加 文件记录
     * @param creatorId
     * @param name
     * @param size
     * @param path
     * @param parentId
     * @return
     */
    File create(String creatorId, String name, String size, String path, String parentId);

    /**
     * 检查当前文件名称 是否在 当前用户、目录下是否存在
     *
     * @param creatorId
     * @param name
     * @param parentId
     * @return
     */
    boolean checkExist(String creatorId, String name, String parentId);

    /**
     * 查询当前用户 当前文件夹下 所有文件
     * @param creatorId
     * @param parentId
     * @return
     */
    List<File> queryList(String creatorId, String parentId);

    /**
     * 查询当前用户  当前文件夹下 所有匹配关键字文件
     * @param creatorId
     * @param parentId
     * @param searchKey
     * @return
     */
    List<File> queryList(String creatorId, String parentId, String searchKey);

    /**
     * 查询当前用户 所有 匹配关键字文件
     * @param creatorId
     * @param searchKey
     * @param f
     * @return
     */
    List<File> queryList(String creatorId, String searchKey, boolean f);

    /**
     * 数据库删除文件记录 同时删除文件资源
     * @param id
     * @return
     */
    boolean remove(String id);

    /**
     * 数据库删除 文件夹下所有文件记录 同时删除文件资源
     * @param parentId
     * @return
     */
    boolean removes(String parentId);

    /**
     * 更新文件名称 先判断当前文件夹下是否有同名
     * @param id
     * @param parentId
     * @param name
     * @return
     */
    boolean updateName(String id, String parentId, String name);

    /**
     * 根据id查询文件
     * @param id
     * @return
     */
    File getById(String id);

    List<File> getFileList(String parentId);
}
